package cn.itcast.nems.studentrecord.dao.entity;

import cn.itcast.nems.common.entity.UUIDEntity;
import cn.itcast.nems.studentrecord.dao.condition.ReceivableAdjustmentState;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 应收调价单;所有对学生的收款都走应收单
 * 主键ID;规则：前缀+6位随机字符（大写字母+数字），示例：TJ-I2Z8D8
 * </p>
 *
 * @author changLu.Gao
 * @since 2023/11/21 6:17 PM
 **/
@TableName(value = "e2_receivable_adjustment")
@Getter
@Setter
public class ReceivableAdjustment extends UUIDEntity {
    /**
     * 学籍ID
     */
    private String studentRecordId;
    /**
     * 调价学籍上的班级ID
     */
    private Integer clazzId;
    /**
     * 调价学籍上的班级名称
     */
    private String clazzName;
    /**
     * 学籍对应班级的校区ID；冗余字段，用于控制数据权限
     */
    private String clazzCampusId ;
    /**
     * 学籍对应班级的校区名称；冗余字段，用于控制数据权限
     */
    private String clazzCampusName ;
    /**
     * 学籍对应班级的学科ID；冗余字段，用于控制数据权限
     */
    private String clazzSubjectId ;
    /**
     * 学籍对应班级的学科名称；冗余字段，用于控制数据权限
     */
    private String clazzSubjectName ;
    /**
     * 原实际应收金额
     */
    private Integer originalAmount;
    /**
     * 可调减金额, 凭单提交后此金额不会改变
     */
    private Integer canAdjustmentAmount;
    /**
     * 调整金额;调增为“正”，调减为“负”
     */
    private Integer amount;
    /**
     * 调整后应收金额
     */
    private Integer targetAmount;
    /**
     * 调整后应收金额
     */
    private String reason;

    /**
     * 特殊申请;枚举值：非特殊｜0、特殊｜1
     */
    private Boolean specialFlag;
    /**
     * 备注
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String remark;
    /**
     * 状态;枚举值：草稿｜DRAFT、待审批｜PENDING、审批中｜APPROVING、审批未通过｜REJECTED、已完成｜FINISHED
     */
    private ReceivableAdjustmentState state;
}
